Lending Events Lifecycle Guide
This brief guide describes a representative, sample lifecycle for a loan product. We can't explore every event, so we'll focus on the most typical loan events. System initiated activities, such as Issue Bill, Make Due, and so on, won't be covered by this guide.
Scenario
In this scenario, the origination process for a mortgage loan account has already taken place, and an API is invoked for the creation of a loan account. Following loan account creation, the following lifecycle events occur:
- Loan disbursement.
- Loan repayment
- Loan servicing - for example, an update to the account or the schedule, term or commitment amount modification, an update to the settlement, or a a payment holiday update.
- Loan payoff.
- Loan charge-off.
- Loan write-off.
Lifecycle Diagram
Legend
|
The API URL that's used to carry out this business process. |
API request (typically, a command to perform an operation). |
|
The event type that's emanated. | |
Business event emanating after the process is completed by the system. | |
Business process in the system. | |
Completion of the business process in the system. |
Tip: Click diagram to expand.
Loan Account Creation
API
The API that's used to create the mortgage loan account.
POST/v1.0.0/holdings/loans/mortgages
Event
The event that's emanated at mortgage loan account creation.
lending.createLoan.loanCreated
Event Payload
productName |
Specifies the name of the loan product. |
originalContractDate |
Indicates the actual date when the loan is created. |
tenor |
Contains the term of the loan. |
contractAmount |
Contains the commitment amount of the loan. |
baseDetails |
Typically contains all the basic account information – such as the account reference, system name, transaction reference, and the effective date of the event - and is defaulted for all events. |
feeDetails |
Contains the fee that's incurred when performing this transaction. It's useful for passing details to pricing systems which can compute benefits on top of the fee. The object is populated only if a fee is incurred. |
alternateReferences |
Carries the list of alternate references that have been recorded for this account as Type/ID pair. |
repaymentDetails |
Contains repayment details, such as payment type, payment frequency, and the payment method for the loan account. |
party |
Contains the party details of the loan, such as the party id, the party role, and so on. |
interest |
Contains the interest details of the loan, such as fixed rate, floating rate, margin, and so on. |
settlementDetails |
Contains the payin and payout account details of the loan account. |
officerDetails |
Contains the details of the approving officer, linked to the loan account. |
Note: All the subsequent objects carry the individual, salient property details of the loan account, such as the parties involved, interest details, settlement details and so on.
- Sample Code: Loan Account Creation Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "productName": "dddddddd", "originalContractDate": "ee", "tenor": "ccccccccc", "maturityDate": "ee", "contractAmount": "ccccccccc", { "baseDetails": { "contractReference": "AAAAAAAAAA", "systemReference": "BBBB", "companyReference": "CCCCCCCCC", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp":"ddddddd" "transactionReference": "ddddd", "reversalIndicator": false, "OriginationRefValue": "", "contractStatus": "BBB", "accountId": "BBBB", "Ooverdue": "", "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "cccccccc", "closingBalance": "A", "dateType": "A", "debitTotalAmount": "bbbbbbbb", "creditTotalAmount": "bbbbbbbb", "timeStamp": null } ] }, "alternateReferences": [ { "alternateIdType": "eeeeeeeee", "alternateId": "CCCCC" } ], "party": [ { "partyReference": "eeeeeeeee", "partyRole": "bbbbbbbbb" } ], "repaymentDetails": [ { "effectiveDate": "AAAA", "schedules": [ { "repaymentType": "B", "description": "ddd", "paymentMethod": "AAA", "paymentFrequency": "dd", "paymentFrequencyDescription": "dddddd", "payments": [ { "startDate": "bb", "endDate": "EEEEEE", "numberOfPayments": "e", "calculatedPaymentAmount": "AAA" } ], "nextPaymentDate": "EE" } ] } ], "limit": [ { "limitKey": "DD", "limitReference": "EEEE", "limitSerial": "CCCCCCCCC" } ], "interest": [ { "rateName": "bbbb", "rateDescription": "", "interestConditions": [ { "effectiveDate": "BBB", "rateTierType": "CCCC", "tierDetails": [ { "fixedRate": "BBBBB", "floatingIndex": "D", "periodicDetails": [ { "periodicIndex": "bbbbb", "periodicType": "cc", "periodicRate": "CCCC", "periodicPeriod": "CCC", "periodicMethod": "", "initialResetDate": "AA", "periodicReset": "AAAAAAA", "nextResetDate": "ccccc" } ], "margins": [ { "marginType": "ccccccc", "marginOperand": "b", "marginRate": "c" } ], "tierAmount": "E", "tierPercent": "", "effectiveRate": "cccc", "linkedRateIndicator": "BBBBBBBB" } ] } ] } ], "settlementDetails": [ { "payinSettlement": [ { "payinPaymentTypes": [ { "payinPaymentType": "aaaaaaaaa", "description": "AAA" } ], "payinDetails": [ { "payInPoProduct": "eeeee", "payInAccount": "B", "payInBeneficiary": "ddd" } ] } ], "payoutSettlement": [ { "payoutDetails": [ { "payoutAccount": "aaaaaaa", "payoutBeneficiary": "eeee", "payOutPoProduct": "cccccccc" } ], "payOutPropertyClasses": [ { "propertyClassId": "DDDDDDDD", "propertyClassName": "CCC" } ], "payOutProperties": [ { "propertyId": "cc", "propertyName": "d" } ] } ], "defaultSettlementAccounts": [ { "defaultSettlementAccount": "" } ] } ], "officerDetails": [ { "primaryOfficer": "BBBBBBBBB", "otherOfficers": [ { "otherOfficer": "c", "otherOfficerRole": "" } ] } ], "productCategoryId": "dddd", "shortTitles": [ { "language": "CCCCCCC", "shortTitle": "BBBBBBB" } ], "coolingOffDate": "aaaaaaaaa", "renewalDate": "EEE" } } }
Loan Disbursement
API
The API that's used to disburse the mortgage loan commitment amount.
PUT /v1.0.0/holdings/loans/mortgages/{mortgageId}/disbursements
Event
The event that's emanated at loan disbursement.
lending.disburse.transactionExecuted
Event Payload
transactionCurrency |
Specifies the currency of the disbursement transaction. |
transactionAmount |
Contains the transaction amount disbursed from the loan account. |
- Sample Code: Loan Disbursement Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "transactionCurrency": "DDDDDD", "transactionAmount": "CCCC", "contractAmount": "ee", "baseDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp": "ccccccccc", "transactionReference": "ddddd", "reversalIndicator": false, "originationReference": "", "contractStatus": "BBB", "accountId": "BBBBB", "overdue": "", "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "cccccccc", "closingBalance": "A", "dateType": "A", "debitTotalAmount": "", "creditTotalAmount": "bbbbbbbb", "timeStamp": "dddd" } ] } ], "context": [ { "contextName": "eeeeeeeee", "contextValue": "CCCCC" } ], "repaymentDetails": [ { "effectiveDate": "AAAA", "schedules": [ { "repaymentType": "B", "description": "ddd", "paymentMethod": "AAA", "paymentFrequency": "dd", "paymentFrequencyDescription": "dddddd", "payments": [ { "startDate": "bb", "endDate": "EEEEEE", "numberOfPayments": "e", "calculatedPaymentAmount": "AAA" } ], "nextPaymentDate": "EE" } ] } ] } }
Loan Repayment
API
The API that's used to repay the mortgage loan.
PUT /v5.1.0 /holdings/loans/mortgages/{mortgageId}/repayments
Event
The event that's emanated at loan repayment.
lending.repay.transactionExecuted
Event Payload
balances |
Contains the details of the amount disbursed, and the balances of the loan account impacted. |
interestProperties |
Contains details about interest on the loan, such as the amount of interest accrued, the period start date, and the period end date for the defined time period |
- Sample Code: Loan Repayment Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "transactionCurrency": "DDDDDD", "transactionAmount": "CCCC", "contractAmount": "ee", "baseDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp": "ccccccccc", "transactionReference": "ddddd", "reversalIndicator": false, "originationReference": "", "contractStatus": "BBB", "accountId": "BBBBB", "overdue": "", "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "cccccccc", "closingBalance": "A", "dateType": "A", "debitTotalAmount": "", "creditTotalAmount": "bbbbbbbb", "timeStamp": "dddd" } ] } ], "context": [ { "contextName": "eeeeeeeee", "contextValue": "CCCCC" } ], "repaymentDetails": [ { "effectiveDate": "AAAA", "schedules": [ { "repaymentType": "B", "description": "ddd", "paymentMethod": "AAA", "paymentFrequency": "dd", "paymentFrequencyDescription": "dddddd", "payments": [ { "startDate": "bb", "endDate": "EEEEEE", "numberOfPayments": "e", "calculatedPaymentAmount": "AAA" } ], "nextPaymentDate": "EE" } ] } ], "interestProperties": [ { "accrualInfo": { "description": "bbbb", "accrualAmount": "cc", "negativeInterestAmount":"BBBB", "positiveInterestAmount":"BBBB", "periodEndDate":"DDDDDDDD", "periodStartDate":"DDDDDDDD" } } ] } }
Account Updated
API
The API that's used to update the account details of the loan - such as, account name, short name, and so on - and to add posting restrictions in the loan account where the customer is defaulted, and no further disbursements should be allowed to the customer.
PUT /v1.0.0/holdings/loans/mortgages/{mortgageId}/accounts
Event
The event that's emanated when a loan account is updated.
lending.updateAccount.accountUpdated
Event Payload
postingRestrictions |
Contains the details of the posting restriction fields, such as posting restriction name, start date, end date, restriction reason, unblock reason, and so on. |
shortTitles |
Contains the short title for the account. |
- Sample Code: Account Updated Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "baseDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp": "ccccccccc", "transactionReference": "ddddd", "reversalIndicator": false, "originationReference": "", "contractStatus": "BBB", "accountId": "dddd", "overdue": "aaaa" "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "eeeeeeeee", "closingBalance": "CCCCC", "dateType": "eeee", "debitTotalAmount": "dddd", "creditTotalAmount": "dddd", "timeStamp": "ddddd" } ], "productCategoryId": "ccccc" "postingRestrictions": [ { "postingRestrictId": "eeeeeeeee", "postingRestrictName": "bbbbbbbbb", "restrictionReason": "dddddd", "restrictionText": "cccc", "unrestrictionReason": "ddddd", "unrestrictionText": "ddddd", "restrictionStartDate": "ccccc", "restrictionExpiryDate": "dddd" } ], "shortTitles": [ { "language": "AAAA", "shortTitle": "CCCC" } ] } ], }
Schedule Updated
API
The API that's used to update the payment schedule of the loan account.
PUT/v1.0.0/holdings/loans/{loanId}/simulations/products/schedules
Event
The event that's emanated when the schedule is updated.
lending.updateSchedule.scheduleUpdated
Event Payload
repaymentType |
Contains the details of the repayment, such as payment method, payment frequency, and so on. |
payments |
Contains the details of the schedule, such as start date, end date, number of payments, and so on. |
- Sample Code: Schedule Updated Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "baseDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp": "ccccccccc", "transactionReference": "ddddd", "reversalIndicator": false, "originationReference": "", "contractStatus": "BBB", "accountId": "dddd", "overdue": "aaaa" "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "eeeeeeeee", "closingBalance": "CCCCC", "dateType": "eeee", "debitTotalAmount": "dddd", "creditTotalAmount": "dddd", "timeStamp": "ddddd" } ], "repaymentDetails": [ { "effectiveDate": "ccccc" } ], "schedules": [ { "repaymentType": "eeeeeeeee", "description": "bbbbbbbbb", "paymentMethod": "dddddd", "paymentFrequency": "cccc", "paymentFrequencyDescription": "ddddd", } ], "payments": [ { "startDate": "AAAA", "endDate": "CCCC", "numberOfPayments": "dddd", "calculatedPaymentAmount":"cccc" } ], "nextPaymentDate": "eeee" "scheduledProperties": [ { "scheduledProperty": "ccccc" } ], } ], }
Commitment Amount Increased
API
The API that's used to increase the commitment amount of the mortgage loan account when the customer requested for top-up.
PUT/v1.0.0/holdings/loans/mortgages/{mortgageId}/commitmentIncreases
Event
The event that's emanated when the commitment is increased.
lending.modifyCommitment.commitmentModified
Event Payload
increaseCommitmentAmount |
Indicates the increased commitment amount for the loan account. |
decreaseCommitmentAmount |
Indicates the decreased commitment amount for the loan account (applicable only if the commitment got decreased). |
- Sample Code: Commitment Increased Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "increaseCommitmentAmount": "dddddddd", "decreaseCommitmentAmount": "ee", "tenor": "ccccccccc", "baseDetails": { "contractReference": "AAAAAAAAAA", "systemReference": "BBBB", "companyReference": "CCCCCCCCC", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp":"ddddddd" "transactionReference": "ddddd", "reversalIndicator": false, "OriginationRefValue": "", "contractStatus": "BBB", "accountId": "BBBB", "Ooverdue": "", "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "cccccccc", "closingBalance": "A", "dateType": "A", "debitTotalAmount": "bbbbbbbb", "creditTotalAmount": "bbbbbbbb", "timeStamp": null } ] }, "repaymentDetails": [ { "effectiveDate": "AAAA", "schedules": [ { "repaymentType": "B", "description": "ddd", "paymentMethod": "AAA", "paymentFrequency": "dd", "paymentFrequencyDescription": "dddddd", "payments": [ { "startDate": "bb", "endDate": "EEEEEE", "numberOfPayments": "e", "calculatedPaymentAmount": "AAA" } ], "nextPaymentDate": "EE" } ] } ], "coolingOffDate": "aaaaaaaaa", } }
Term Modified
API
The API that's used to modify the term of loan account when the customer has repaid some principal amount and the customer has requested to maintain the same monthly repayment amount for the remaining principal balance and informed to reduce the tenor of the loan.
PUT /v1.0.0/holdings/loans/mortgages/{mortgageId}/terms
Event
The event that's emanated when the term is modified.
lending.modifyTenor.tenorModified
Event Payload
tenor |
Contains the term of the loan account. |
- Sample Code: Term Modified Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "increaseCommitmentAmount":"aaaaa", "decreaseCommitmentAmount":"aaaaa", "tenor": "ccccc" "baseDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp": "ccccccccc", "transactionReference": "ddddd", "reversalIndicator": false, "originationReference": "", "contractStatus": "BBB", "accountId": "dddd", "overdue": "aaaa" "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "eeeeeeeee", "closingBalance": "CCCCC", "dateType": "eeee", "debitTotalAmount": "dddd", "creditTotalAmount": "dddd", "timeStamp": "ddddd" } ], "repaymentDetails": [ { "effectiveDate": "cccc" "schedules": [ { "repaymentType":"aaaaa", "description":"ccccc", "paymentMethod":"ddddd", "paymentFrequency":"ccccc", "paymentFrequencyDescription":"eeeee" "payments": [ { "startDate": "eeeeeeeee", "endDate": "bbbbbbbbb", "numberOfPayments": "dddddd", "calculatedPaymentAmount": } ], "nextPaymentDate": "ddddd" "scheduledProperties": [ { "scheduledProperty": "ccccc", } ], } ], }
Settlement Updated
API
The API that's used to update the settlement account in a loan account when the customer wish to pay the monthly repayment amount from another account or the loan disbursement will be credited to other account.
PUT/v1.0.0/holdings/loans/mortgages/{mortgageId}/settlements
Event
The event that's emanated when the settlement is updated.
lending.updateSettlement.settlementUpdated
Event Payload
payinSettlement |
Contains the details of the payin account details, such as payin payment type like interest, principal, payin account number, and so on. |
payoutSettlement |
Contains the details of the payout account details, such as payout account number. |
- Sample Code: Settlement Updated Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "baseDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp": "ccccccccc", "transactionReference": "ddddd", "reversalIndicator": false, "originationReference": "", "contractStatus": "BBB", "accountId": "dddd", "overdue": "aaaa" "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "eeeeeeeee", "closingBalance": "CCCCC", "dateType": "eeee", "debitTotalAmount": "dddd", "creditTotalAmount": "dddd", "timeStamp": "ddddd" } ], "settlementDetails": [ { "payinSettlement": [ { "payinPaymentTypes": [ { "payinPaymentType": "aaaaaa", "description": "aaaa" } ], "payinDetails": [ { "payInPoProduct": "eeeeeeeee", "payInAccount": "bbbbbbbbb", "payInBeneficiary": "dddddd", } ], } ], "payoutSettlement": [ { "payoutDetails": [ { "payoutAccount": "AAAA", "payoutBeneficiary": "CCCC", "payOutPoProduct": "dddd", } ], "payOutPropertyClasses": [ { "propertyClassId": "ccccc", "propertyClassName": "ddddd" } ], "payOutProperties": [ { "propertyId": "ccccc", "propertyName": "ddddd" } ], "defaultSettlementAccounts": [ { "defaultSettlementAccount": "ccccc", } ], } ], }
Payment Holiday
API
The API that's used to update the payment holiday of the mortgage loan.
PUT/v1.0.0/holdings/loans/mortgages/{mortgageId}/paymentHolidays
Event
The event that's emanated when the payment holiday is updated.
lending.updatePaymentHoliday.paymentHolidayUpdated
Event Payload
numberOfInstallments |
Contains the number of installments for which the payment holiday applied. |
paymentHolidays |
Carries the details of payment holiday, such as payment type, bill date, holiday start date, and so on. |
HolidayPeriods |
Contains the details of holiday period. It includes holiday date, original payment amount, new payment amount, and so on. |
- Sample Code: Payment Holiday Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "baseDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp": "ccccccccc", "transactionReference": "ddddd", "reversalIndicator": false, "originationReference": "", "contractStatus": "BBB", "accountId": "BBBBB", "overdue": "", "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "cccccccc", "closingBalance": "A", "dateType": "AAAAA", "debitTotalAmount": "bbbbbb", "creditTotalAmount": "bbbbbbbb", "timeStamp": "dddd" } ] } ], "numberOfInstallments": "", "paymentHolidays": [ { "paymentType": "B", "description": "ddd", "billType": "AAA", "billTypeDescription": "dd", "holidayStartDate": "dddddd", "holidayPeriods": [ { "holidayDate": "bb", "originalPaymentAmount": "EEEEEE", "newPaymentAmount": "FFFF", } ], "cancelledHolidays": [ { "cancelledHolidayDate": "EE", "cancelledOriginalPaymentAmount": "AAAA",, "cancelledNewPaymentAmount": "BBBB", } ] } ] } }
Mortgage Loan Payoff
Loan payoff is the pre-closure of a loan in a single payment before the actual maturity of the loan tenure. When the customer requests to pay off the loan, the following steps are carried out by the bank to close the loan.
API
The API that's used to simulate the loan account when the customer requests to payoff.
PUT /v1.0.0/holdings/loans/{loanId}/simulations/payoffCalculations/bills
Event
The event that's generated after simulation of the loan account.
lending.calculatePayoff.payoffCalculated
Event Payload
balances |
Contains the closing balance of the loan, total amount debited from account, total amount credited to loan account, and so on. |
accrualInfo |
Contains the interest accrual amount, start date, end date, and so on. |
- Sample Code: Loan Simulation Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "baseDetails": { "contractReference": "AAAAAAAAAA", "systemReference": "BBBB", "companyReference": "CCCCCCCCC", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp":"ddddddd" "transactionReference": "ddddd", "reversalIndicator": false, "OriginationRefValue": "", "contractStatus": "BBB", "accountId": "BBBB", "Ooverdue": "", "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "cccccccc", "closingBalance": "A", "dateType": "A", "debitTotalAmount": "bbbbbbbb", "creditTotalAmount": "bbbbbbbb", "timeStamp": null } ] }, "interestProperties": [ { "accrualInfo": [ { "accrualAmount": "BBB", "negativeInterestAmount": "CCCC", "positiveInterestAmount": "E", "periodEndDate": "", "periodStartDate": "cccc", } ] } ] } }
Mortgage Loan Payoff Issued
API
The API that's used to generate the payoff bill.
PUT /v1.0.0 /holdings/loans/mortgages/{mortgageId}/payoffCalculations
Event
The event that's generated when the payoff is issued.
lending.issuePayoff.payoffBillIssued
Event Payload
payoffDate |
Indicates a date on which payoff bill has been raised. |
totalAmount |
Indicates the total closure amount of the loan account. |
totalInterestAmount |
Indicates the sum of interest amounts. |
expiryDays |
Defines the expiry date for the payoff bill. |
closureNote |
Indicates the reason for the loan closure. |
- Sample Code: Issue Payoff Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "baseDetails": { "contractReference": "AAAAAAAAAA", "systemReference": "BBBB", "companyReference": "CCCCCCCCC", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp":"ddddddd" "transactionReference": "ddddd", "reversalIndicator": false, "OriginationRefValue": "", "contractStatus": "BBB", "accountId": "BBBB", "Ooverdue": "", "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "cccccccc", "closingBalance": "A", "dateType": "A", "debitTotalAmount": "bbbbbbbb", "creditTotalAmount": "bbbbbbbb", "timeStamp": null } ] }, "payoffDate": "cccccccc", "totalAmount": "A", "totalInterestAmount": "A", "paymentIndicator": "bbbbbbbb", "expiryDays": "bbbbbbbb", "propertyBalances": [ "properties": { "bankOutstandingAmount": "", "chargeoffAmount": "bbbbb", "writeOffAmount": "aaaa", "adjustValue": "" } ], "infoPayTypes": [ "properties": { "interestAmount": "", "paymentMethod": "bbbbb", } ], "paymentTypes": [ "properties": { "paymentType": "", "description": "bbbbb", "totPayAmount": "aaaa", "infoPayType": "" } ], "paymentDetails": [ "propertyId": { "propertyName": "", "propertyAmount": "bbbbb", "propertyAmountLcy": "aaaa", } ], "closureNote": "bbbbbbbb" } }
Mortgage Loan Payoff Settled
API
The API that's used to settle the payoff amount of the loan account.
PUT /v1.0.0 /holdings/loans/mortgages/{mortgageId}/payoffs
Event
The event that's generated when the payoff is settled.
lending.settleSettlement.settlementSettled
Event Payload
contractStatus |
Indicates the status of the contract. |
balances |
Contains the closing balance of the loan account. |
- Sample Code: Payoff Settlment Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "baseDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp": "ccccccccc", "transactionReference": "ddddd", "reversalIndicator": false, "originationReference": "", "contractStatus": "BBB", "accountId": "dddd", "overdue": "aaaa" "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "eeeeeeeee", "closingBalance": "CCCCC", "dateType": "eeee", "debitTotalAmount": "dddd", "creditTotalAmount": "dddd", "timeStamp": "ddddd" } ], } ], }
Partial Chargeoff
Borrowers could default on their payments due to economic personal crisis. Under these circumstances, a bank may consider certain receivable amounts on the loan account to be charged off. A charge off may be for the overdue amounts (partial) or for the entire loan amount.
API
The API that's used to charge off the overdue payments of the loan.
PUT/V1.0.0/holdings/loans/mortgages/{mortgageId}/partialChargeOffs
Event
The event that's generated when the loan is partially charged off.
lending.chargeOffAccount.accountChargeOff
Event Payload
billDetails |
Contains all the bill details like bill reference, bill type, bill amount, bill date of a payment transaction. |
propertyBalances |
Contains the interest or account or charge property for which charge off can be performed. |
agingStatus |
Indicates the ageing status of a bill. |
agingstatusChangeDate |
Contains the effective date of the current ageing status of the transaction. |
settlementStatus |
Defines the status of the settlement. |
reason |
Contains the reason for performing the current activity. |
contractStatus |
Indicates the status of the contract. |
- Sample Code: Partial Chargeoff Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "baseDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp": "ccccccccc", "transactionReference": "ddddd", "reversalIndicator": false, "originationReference": "", "contractStatus": "BBB", "accountId": "dddd", "overdue": "aaaa" "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "eeeeeeeee", "closingBalance": "CCCCC", "dateType": "eeee", "debitTotalAmount": "dddd", "creditTotalAmount": "dddd", "timeStamp": "ddddd" } ], "billDetails": [ { "billId": "AAAA", "dueDate": "ccccc", "paymentDate": "CCCC", "deferDate": "ddddd", "expiryDate": "dddd", "billedAmount":"eeee", "billedAmountLcy":"cccc", "currency":"dddd", "billStatus": "eeee" } ], "paymentTypes": [ { "issueDate": "ccccc", "paymentType": "ddddd", "description":"ccccc", "billType":"ddddd", "billTypeDescription":"eeee", "paymentMethod": "ccccc", "paymentFrequency":"eeee", "nextPaymentDate":"cccccc", } ], "paymentDetails": [ { "propertyId": "ccccc", "propertyName": "ddddd", "propertyAmount":"eeee", "propertyAmountLcy": "ccccc" } ], "propertyBalances": [ { "amount": "ccccc", "property":"dddd", "bankOutstandingAmount":"eeee", "chargeoffAmount":"ccccc", "writeOffAmount":"eeee", "adjustValue":"aaaaa", } ], "agingStatus":"aaaa", "agingstatusChangeDate":"ccccc", "previousAgingStatus":"ddddd", "nextAgeDate":"bbbbbb", "bankTotalOutstandingAmount":"eeee", "writtenOffOn":"ddddd", "advancePayment":"cccc", "delinquentAmount":"eeee", "paymentIndicator":"ddddd" "repaymentDetails": [ { "repaidAmount": "dddd" } ], "settlementStatus": "eeeee" "billStatuses": [ { "billStatus": "ddddd", "statusChangeDate": "eeeee" } ], "settlementStatuses": [ { "settlementStatus": "statusChangeDate": } ], "reason":"aaaa", "contractStatus":"aaaaa" }
Chargeoff
API
The API that's used to charge off the entire loan.
PUT/V1.0.0/holdings/loans/mortgages/{mortgageId}/chargeOffs
Event
The event that's generated when the loan is charged off.
lending.chargeOffLoan.loanChargeOff
Event Payload
billDetails |
Contains all the bill details like bill reference, bill type, bill amount, bill date of a payment transaction. |
propertyBalances |
Contains the interest or account or charge property for which charge off can be performed. |
agingStatus |
Indicates the ageing status of a bill. |
agingstatusChangeDate |
Contains the effective date of the current ageing status of the transaction. |
settlementStatus |
Defines the status of the settlement. |
reason |
Contains the reason for performing the current activity. |
contractStatus |
Indicates the status of the contract. |
- Sample Code: Chargeoff Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "baseDetails": { "contractReference": "AAAAAAAAAA", "systemReference": "BBBB", "companyReference": "CCCCCCCCC", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp": "ddddddd", "transactionReference": "ddddd", "reversalIndicator": "sdsds", "OriginationRefValue": "", "contractStatus": "BBB", "accountId": "BBBB", "overdue": "", "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "cccccccc", "closingBalance": "A", "dateType": "A", "debitTotalAmount": "bbbbbbbb", "creditTotalAmount": "bbbbbbbb", "timeStamp": null } ] }, "billDetails": [ { "billId": "B", "dueDate": "ddd", "paymentDate": "AAA", "deferDate": "dd", "expiryDate": "dddddd", "billedAmount": "bb", "billedAmountLcy": "EEEEEE", "currency": "e", "paymentTypes": [ { "issueDate": "bb", "paymentType": "EEEEEE", "description": "FFFF", "billType": "bb", "billTypeDescription": "EEEEEE", "paymentMethod": "FFFF", "paymentFrequency": "bb", "nextPaymentDate": "EEEEEE", "paymentDetails": [ { "propertyName": "bb", "propertyAmount": "EEEEEE", "propertyAmountLcy": "FFFF" } ] } ], "propertyBalances": [ { "amount": "bb", "property": "EEEEEE", "bankOutstandingAmount": "FFFF", "chargeoffAmount": "bb", "writeOffAmount": "EEEEEE", "adjustValue": "EEEEEE" } ], "agingStatus": "bb", "agingstatusChangeDate": "EEEEEE", "previousAgingStatus": "FFFF", "nextAgeDate": "bb", "bankTotalOutstandingAmount": "EEEEEE", "writtenOffOn": "bb", "advancePayment": "EEEEEE", "delinquentAmount": "FFFF", "paymentIndicator": "bb", "repaymentDetails": [ { "repaidAmount": "aaaaaa" } ], "settlementStatus": "bbbb", "billStatuses": [ { "billStatus": "cccccc", "statusChangeDate": "DDDDDD" } ], "settlementStatuses": [ { "settlementStatus": "AAAAAA", "statusChangeDate": "BBBBB" } ] } ], "reason": "AAAA", "contractStatus": "FFFF", "interestProperties": [ { "accrualInfo": { "description": "bbbb", "accrualAmount": "cc", "negativeInterestAmount": "BBBB", "positiveInterestAmount": "BBBB", "periodEndDate": "DDDDDDDD", "periodStartDate": "DDDDDDDD" } } ] } }
Writeoff
API
The API that's used to write off the loan.
PUT /v1.0.0/holdings/loans/consumerLoans/{consumerLoanId}/writeOffs
Event
The event that's generated when the loan is written off.
lending.writeOff.loanWrittenOff
Event Payload
billDetails |
Contains all the bill details like bill reference, bill type, bill amount, bill date of a payment transaction. |
writeOffProperties |
Contains the interest or account or charge property for which write off can be performed. |
- Sample Code: Writeoff Event Payload
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "reason": "eee", "contractStatus": "ffff", "baseDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "activityDateTimeStamp": "ccccccccc", "transactionReference": "ddddd", "reversalIndicator": false, "originationReference": "", "contractStatus": "BBB", "accountId": "BBBBB", "overdue": "", "feeDetails": [ { "feeName": "DDDDDDD", "feeAmount": "", "feeCurrency": "bbbbb", "adjustFeeAmount": "aaaa", "adjustFeeReason": "" } ], "balances": [ { "balanceName": "cccccccc", "closingBalance": "A", "dateType": "AAAAA", "debitTotalAmount": "bbbbbb", "creditTotalAmount": "bbbbbbbb", "timeStamp": "dddd" } ] } ], "billDetails": [ { "billId": "B", "dueDate": "ddd", "paymentDate": "AAA", "deferDate": "dd", "expiryDate": "dddddd", "billedAmount": "dddddd", "billedAmountLcy": "dddddd", "currency": "dddddd", "billStatus": "dddddd", "paymentTypes": [ { "issueDate": "bb", "paymentType": "EEEEEE", "description": "FFFF", "billType": "bb", "billTypeDescription": "EEEEEE", "paymentMethod": "FFFF", "paymentFrequency": "bb", "nextPaymentDate": "EEEEEE", "paymentDetails": [ { "propertyName": "bb", "propertyAmount": "EEEEEE", "propertyAmountLcy": "FFFF", } ] } ], "propertyBalances": [ { "amount": "bb", "property": "EEEEEE", "bankOutstandingAmount": "FFFF", "chargeoffAmount": "bb", "writeOffAmount": "EEEEEE", "adjustValue": "EEEEEE", } ], "agingStatus": "bb", "agingstatusChangeDate": "EEEEEE", "previousAgingStatus": "FFFF", "nextAgeDate": "bb", "bankTotalOutstandingAmount": "EEEEEE", "writtenOffOn": "bb", "advancePayment": "EEEEEE", "delinquentAmount": "FFFF", "paymentIndicator": "bb", "repaymentDetails": [ { "repaidAmount": "aaaaaa", } ], "settlementStatus": "bbbb", "billStatuses": [ { "billStatus": "cccccc", "statusChangeDate": "DDDDDD", } ], "settlementStatuses": [ { "settlementStatus": "AAAAAA", "statusChangeDate": "BBBBB", } ] } ], "writeOffProperties": [ { "propertyId": "AAAA", "propertyName": "FFFF", "writeOffAmount": "EE", } ], "interestProperties": [ { "accrualInfo": { "description": "bbbb", "accrualAmount": "cc", "negativeInterestAmount":"BBBB", "positiveInterestAmount":"BBBB", "periodEndDate":"DDDDDDDD", "periodStartDate":"DDDDDDDD" } } ] } }
Accounting Events
Accounting events are emitted in addition to business events for a variety of banking products, including loans, savings accounts, current accounts, and other kinds of bank account. For more information, see the Accounting Event Lifecycle Guide